/*
AlliedBridge Content Management System
Copyright (C) 2006 AlliedBridge

This program is free software; you can redistribute it and/or modify it under the
terms of the GNU General Public License as published by the Free Software Foundation;

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied
warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program; if not, write to the
Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
package org.volume4.alliedbridge.model.events;

import java.io.*;
import java.net.*;
import java.sql.*;
import java.util.*;

import org.apache.commons.fileupload.*;
import org.volume4.utils.*;

import javax.servlet.*;
import javax.servlet.http.*;

public class CreateEvent extends HttpServlet {
	
	// Should the following three String declarations be private or final?
	// Should they be in an interface?
	public String DRIVER,URL,USER,PASS,fieldName,fieldData,fileName,fileFieldName;
	public String folder = "/tomcat/webapps/modelcup/media/comp_logos/";
    public String tempFolder = "/temp";    
    //public String folder = "/opt/tomcat5/webapps/modelcup/media/comp_logos/";    
    //public String tempFolder = "/opt/tomcat5/webapps/modelcup/media/comp_logos/temp/";
	public String app_root,messageSuccess,messageFail,event_id,series,comp_logo,comp_logo_alt,comp_name,lb_comp_logo,lb_comp_logo_alt,
	town,region,comp_date,comp_time,entry_form,entry_form_alt;
        
        /* The below would need to be set via a properties or XML 
         * configuration file per company dependant on which company 
         * are accessing these methods.
         * 
         * There may be a better way to do this and this should be
         * investigated.
        */ 
		public void init() throws ServletException {
        ServletContext context = getServletContext();
        DRIVER = context.getInitParameter("driver");
        URL = context.getInitParameter("mc_dburl");
        USER = context.getInitParameter("mc_dbuser");
        PASS = context.getInitParameter("mc_dbpass");
        }


	public void processRequest (HttpServletRequest request, HttpServletResponse response)
		throws ServletException, IOException {
	response.setContentType("text/html");
	PrintWriter out = response.getWriter();
	Connection con = null;
	messageSuccess = "Update of event completed successfuly.";
	messageFail = "Update of event failed.";

	try {	                
        
		// Create a new file upload handler
        DiskFileUpload upload = new DiskFileUpload();

        // Set upload parameters   
        upload.setSizeMax(-1);
        upload.setSizeThreshold(4096);
        upload.setRepositoryPath(tempFolder);

        // Parse the request
        List items = upload.parseRequest(request);

        // Process the uploaded fields
        Iterator iter = items.iterator();
        while (iter.hasNext()) {
        FileItem item = (FileItem) iter.next();        

        if (item.isFormField()) {               
            if(item.getFieldName().equals("event_id")) {
            	event_id = ServletUtilities.filter(item.getString());                    
            }
            else if(item.getFieldName().equals("series")) {
            	series = ServletUtilities.filter(item.getString());
            }
            else if(item.getFieldName().equals("comp_logo_alt")) {
            	comp_logo_alt = ServletUtilities.filter(item.getString());
            }            
            else if(item.getFieldName().equals("comp_name")) {
            	comp_name = ServletUtilities.filter(item.getString());
            }            
            else if(item.getFieldName().equals("lb_comp_logo_alt")) {
            	lb_comp_logo_alt = ServletUtilities.filter(item.getString());
            }
            else if(item.getFieldName().equals("town")) {
            	town = ServletUtilities.filter(item.getString());
            }
            else if(item.getFieldName().equals("region")) {
            	region = ServletUtilities.filter(item.getString());
            }
            else if(item.getFieldName().equals("comp_date")) {
            	comp_date = ServletUtilities.filter(item.getString());
            }
            else if(item.getFieldName().equals("comp_time")) {
            	comp_time = ServletUtilities.filter(item.getString());
            }
            else if(item.getFieldName().equals("entry_form_alt")) {
            	entry_form_alt = ServletUtilities.filter(item.getString());
            }            
            
        } else {
            if(item.getFieldName().equals("comp_logo")) {
            
            int i = item.getName().lastIndexOf('\\');
            comp_logo = ServletUtilities.filter(item.getName().substring(i+1));
            File savedFile = new File(folder, ServletUtilities.filter(item.getName().substring(i+1)) ); 
            item.write(savedFile);                
            }
            else if(item.getFieldName().equals("lb_comp_logo")) {
                
                int i = item.getName().lastIndexOf('\\');
                lb_comp_logo = ServletUtilities.filter(item.getName().substring(i+1));
                File savedFile = new File(folder, ServletUtilities.filter(item.getName().substring(i+1)) ); 
                item.write(savedFile);
                
            }
            else if(item.getFieldName().equals("entry_form")) {
                
                int i = item.getName().lastIndexOf('\\');
                entry_form = ServletUtilities.filter(item.getName().substring(i+1));
                File savedFile = new File(folder, ServletUtilities.filter(item.getName().substring(i+1)) ); 
                item.write(savedFile);
                
            }	
        }
        
		Class.forName(DRIVER);
		con = DriverManager.getConnection(URL,USER,PASS);
		Statement stmt = con.createStatement();		
                                
		String query = "INSERT INTO ab_events_pending" +
                               "(event_id,series,comp_logo,comp_logo_alt,comp_name," +
                               "lb_comp_logo,lb_comp_logo_alt,town,region,comp_date," +
                               "comp_time,entry_form,entry_form_alt)" + 
                               " VALUES('" + "')";          
              
                int result = stmt.executeUpdate(query);
              
                app_root = request.getContextPath();
				response.sendRedirect(app_root + "/application/application_messages/process_result.jsp?message=" + messageSuccess);	
        }        
} catch (SQLException ex) {
	out.println("\nEXCEPTION:------ SQLException -----\n");
        while (ex != null) {
            out.println("Message: " + ex.getMessage() + "<br>");
            out.println("SQLState: " + ex.getSQLState() + "<br>");
            out.println("ErrorCode :" + ex.getErrorCode());
            ex = ex.getNextException();
        }
    } catch (Exception e) {
        e.printStackTrace();        
} finally {
    try {	
    if (con != null)
        con.close();
	} catch (SQLException ex) {
            out.println("\nEXCEPTION:------ SQLException -----\n");
            out.println("Message: " + ex.getMessage());
            out.println("SQLState: " + ex.getSQLState());
            out.println("ErrorCode :" + ex.getErrorCode());
        }
            }
    }
    /** Handles the HTTP <code>GET</code> method.
     * @param request servlet request
     * @param response servlet response
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        processRequest(request, response);
    }
    
    /** Handles the HTTP <code>POST</code> method.
     * @param request servlet request
     * @param response servlet response
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        processRequest(request, response);
    }
}